The specification relates to a system for mapping changes between a browser history stack and a browser page state. In particular, the specification relates to a mapping system for mapping changes between a browser history stack and a browser page state using one or more tokens.
Browser-based applications are not uncommon on networks. In a browser-based application, the user is not necessarily transferred to another page (e.g., a different URL) when the user interacts with the page (e.g., clicks on a link). The user may remain at the current page (i.e., same URL), which is modified to display a different page state (e.g., the page state associated with the link). Because the user changes page states and not pages, routing problems are created. For example, a user desiring to see a previous page state cannot use the browser's back button because that would bring the user to the previous page (i.e., URL) in the browser history stack and not the previous page state.
Existing development toolkit systems contain a mechanism for pushing events into the browser history stack and monitoring for and acting upon changes to the browser history stack. However, there is no canonical system for mapping changes in the browser history stack to the execution of the browser-based application code. The lack of a canonical system has led to developers creating many different implementations to accomplish the same thing. This is not ideal. The different implementations may not be rigorously tested and therefore prone to failure. Moreover, the different implementations may be application specific requiring a developer to create a new implementation for each new application, which may be time consuming and expensive.
A problem present in existing systems is that there is no canonical, well-tested and highly flexible method for mapping changes between a browser-based application's page state and changes in a browser history stack.